package com.wpen.unit.infra.repository.system;

import java.io.Serializable;
import java.util.List;


import com.wpen.unit.infra.mybatis.system.po.UserPo;

/**
 * 用户信息维护.
 * 
 * @author Wang Peng
 * @date 2022-12-23
 */
public interface UserRepository {
    
    public UserPo queryByUserId(String userId);

    /**
     * 查询记录条数.
     * 
     * @param index 起始索引号
     * @param size 查询条数
     * @param userPo 条件对象
     * @return 条数
     */
    public long count(UserPo userPo);

    /**
     * 查询记录列表.
     * 
     * @param index 起始索引号
     * @param size 查询条数
     * @param userPo 条件对象
     * @return 数据列表
     */
    public List<UserPo> queryList(int index, int size, UserPo userPo);

    /**
     * 根据条件查询单条记录，如果多条符合条件，只返回第一条.
     * 
     * @param userPo 条件对象
     * @return 数据对象
     */
    public UserPo queryFirst(UserPo userPo);

    /**
     * 根据主键查询单条记录.
     * 
     * @param id 编号
     * @return 数据对象
     */
    public UserPo queryById(Serializable id);

    /**
     * 插入单条记录.
     * 
     * @param userPo 待保存对象
     * @return 影响条数
     */
    public boolean insert(UserPo userPo);

    /**
     * 插入多条记录.
     * 
     * @param listUserPos 待保存列表对象
     * @return 影响条数
     */
    public boolean insertBatch(List<UserPo> listUserPos);

    /**
     * 根据条件更新记录.
     * 实现类内部实现版本号+1操作.
     * 
     * @param userPo 待更新对象
     * @return 影响条数
     */
    public boolean updateById(UserPo userPo);

    /**
     * 根据主键删除记录.
     * 
     * @param id 编号
     * @return 影响条数
     */
    public boolean deleteByIds(Serializable[] ids);
    
}
